// 状态管理
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
import order from './module/order.js'

const store = new Vuex.Store({
	modules: {
		order
	},
	// 状态数据包
	state: {
		vuex_user_db: {}, //已登录的用户信息

		Default_user_db: { //未登录的用户信息
			nick_name: '立即登录', //用户昵称
			user_id: '', //用户帐号
			avatar: '/static/user.png', //用户头像
		},
		address: '城市标题'
	},

	mutations: {
		// 设置用户信息
		set_vuex_user_db(state, user_db) {
			console.log('设置用户信息1', user_db);
			state.vuex_user_db = user_db
			console.log('// Vuex信息::', state);
		}
	},


	getters: {
		vuex_user_db(state) {
			console.log("========getters源物体参数vuex_user_db===========D:/uniapp/minishop/store/index.js");
			if (state.vuex_user_db.user_id === undefined) return state.Default_user_db
			return state.vuex_user_db
		}
	},
	actions: {
		vuex_user_db_init({
			dispatch
		}) {
			console.log("登录用户信息数据初始化");
			//本地缓存文件中是否存在登录会话login@token,不存在说明没有和服务器存在会话，存在的话用来对比服务器会话是否对等
			console.log("========当前缓存文件登录状态", uni.getStorageSync('login@token'));
			if (!uni.getStorageSync('login@token')) {
				console.log("========当前不在登录状态===========");
				dispatch('logout'); //退出登录状态
			} else {
				dispatch('getvuex_user_db') //远程获取用户信息
			}
		},

		// 退出登录状态
		async logout({
			state,
			commit
		}) {
			console.log("========清除登录token状态===========");
			uni.removeStorageSync('login@token'); //清除登录token状态
			commit('set_vuex_user_db', state.Default_user_db); //应用未登录用户信息数据
		},

		// 远程获取用户信息
		async getvuex_user_db({
			state,
			commit
		}) {
			console.log("========远程获取用户信息===========D:/uniapp/minishop/store/index.js");
			// console.log("========当前缓存文件登录状态===========", uni.getStorageSync('login@token'));
			// console.log("========当前 storage 的相关信息===========", JSON.stringify(uni.getStorageInfoSync()));
			const api_url = '/user/info'
			const res = await uni.$http.post(api_url)
			console.log("远程获取用户信息-回调", res);
			commit('set_vuex_user_db', res.data.db)
		}
	}
})

export default store